package pub.tbc.mybatis.assist.plugin.page;

import lombok.*;
import lombok.extern.slf4j.Slf4j;

/**
 * 分页参数
 *
 * @author tbc on 2017/5/15 16:57:38.
 */
@Slf4j
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@RequiredArgsConstructor(staticName = "of")
public class PageParams {
    /**
     * 是否启用插件，默认为true
     */
    @Builder.Default
    private Boolean useFlag;
    /**
     * 是否检查当前页码的有效性（执行前执行后都要检查）
     */
    private Boolean checkFlag;
    /**
     * 是否纠正错误的当前页码（当前页码小于等于0时纠正为1[实际执行时还要减1变成0]、当前页码大于总页数时，纠正为最后一页）
     */
    private Boolean correctPage;

    /**
     * 当前面码
     */
    @NonNull
    private Integer pageNum;
    /**
     * 每页条数
     */
    @NonNull
    private Integer pageSize;
    /**
     * 当前SQL返回总数
     */
    private Integer total;
    /**
     * 总页数
     */
    private Integer totalPage;

    ///// Fluent Method ///////////////
    public PageParams total(Integer total) {
        this.total = total;
        return this;
    }

    public PageParams totalPage(Integer totalPage) {
        this.totalPage = totalPage;
        return this;
    }

    public PageParams useFlag(boolean useFlag) {
        this.useFlag = useFlag;
        return this;
    }

    public PageParams checkFlag(boolean checkFlag) {
        this.checkFlag = checkFlag;
        return this;
    }

    public PageParams correctPage(boolean correctPage) {
        this.correctPage = correctPage;
        return this;
    }
    //////////////////////////////////////


}
